//
// Copyright (C) 2013-2018 University of Amsterdam
//
// This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU Affero General Public License as
// published by the Free Software Foundation, either version 3 of the
// License, or (at your option) any later version.
//
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
// GNU Affero General Public License for more details.
//
// You should have received a copy of the GNU Affero General Public
// License along with this program.  If not, see
// <http://www.gnu.org/licenses/>.
//

#include "checkboxbase.h"
#include "log.h"
#include "analysisform.h"

CheckBoxBase::CheckBoxBase(QQuickItem* parent)
	: JASPControl(parent), BoundControlBase(this)
{
	_controlType = ControlType::CheckBox;
}

bool CheckBoxBase::isJsonValid(const Json::Value &value) const
{
	return value.type() == Json::booleanValue;
}

Json::Value CheckBoxBase::createJson() const
{
	return checked();
}

void CheckBoxBase::bindTo(const Json::Value &value)
{
	BoundControlBase::bindTo(value);
	setChecked(value.asBool());
}

void CheckBoxBase::setUp()
{
	JASPControl::setUp();
	connect(this,	&CheckBoxBase::clicked, this,	&CheckBoxBase::clickedSlot);
}

QString CheckBoxBase::generateDoxygenHelp() const
{
	QString result = JASPControl::generateDoxygenHelp();
	if (result.isEmpty())
		return result;

	result += QString::fromStdString("#'    Defaults to \\code{") + (checked() ? "TRUE" : "FALSE") + "}.\n";
	return result;
}

void CheckBoxBase::setChecked(bool checked)
{
	setProperty("checked", checked);
}

bool CheckBoxBase::checked() const
{
	return property("checked").toBool();
}

void CheckBoxBase::clickedSlot()
{
	setBoundValue(checked());
}
